from django.http import JsonResponse
from django.forms.models import model_to_dict


# 格式化响应数据
# 注意：此文件是为了保持模块结构一致性而创建，实际功能目前主要依赖order_v2.utils模块
# 将来如有特定的order_analytics工具函数，可以在此处添加
def response_dict(data=None, message="操作成功", code=0):
    """返回统一格式的JSON响应
    
    Args:
        data: 响应数据
        message: 响应消息
        code: 响应状态码，0表示成功，非0表示失败
    
    Returns:
        JsonResponse: Django JSON响应对象
    """
    result = {
        "code": code,
        "message": message
    }
    if data is not None:
        result["data"] = data
    return JsonResponse(result)


# 数据处理辅助函数
def format_decimal(data):
    """将Decimal类型数据转换为float，便于JSON序列化
    
    Args:
        data: 包含Decimal类型的字典或列表
        
    Returns:
        处理后的数据，Decimal类型转换为float
    """
    import decimal
    
    if isinstance(data, decimal.Decimal):
        return float(data)
    elif isinstance(data, dict):
        return {key: format_decimal(value) for key, value in data.items()}
    elif isinstance(data, list):
        return [format_decimal(item) for item in data]
    else:
        return data


# 日期格式处理函数
def format_date_range(start_date=None, end_date=None):
    """格式化日期范围参数
    
    Args:
        start_date: 开始日期字符串
        end_date: 结束日期字符串
        
    Returns:
        tuple: (start_datetime, end_datetime)或None
    """
    from datetime import datetime
    
    if not start_date and not end_date:
        return None
    
    try:
        start_dt = datetime.strptime(start_date, '%Y-%m-%d') if start_date else None
        end_dt = datetime.strptime(end_date, '%Y-%m-%d') if end_date else None
        return (start_dt, end_dt)
    except ValueError:
        return None